// 给定一个整数数组 nums ，找到一个具有最大和的连续子数组（子数组最少包含一个元素），返回其最大和。
// 思路，贪心
// 局部最优为 当前连续和为负数的时候立刻放弃，从下个元素重新计算连续和，因为负数会拉低总和
// 只要连续和为正，对后面的元素起到增大总和的作用
// 只要有更大的连续和出现，result就会更新
function maxSubArray(nums) {
    let result = -Infinity
    let sum = 0
    for (let i = 0; i < nums.length; i++) {
        sum += nums[i]
        if (sum > result) {
            result = sum
        }        
        // 当和小于等于0的时候，对结果对总和是拖累的
        if (sum <= 0) {
            sum = 0
        }
    }
    // 返回最大的结果
    return result
}

console.log(maxSubArray([-2,1,-3,4,-1,2,1,-5,4]))